package com.itheima.wemedia.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itheima.common.util.AppJwtUtil;
import com.itheima.common.vo.ResultVo;
import com.itheima.wemedia.pojo.WmUser;
import com.itheima.wemedia.mapper.WmUserMapper;
import com.itheima.wemedia.service.WmUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * @description <p>自媒体用户信息 业务实现</p>
 *
 * @version 1.0
 * @package com.itheima.wemedia.service.impl
 */
@Service
public class WmUserServiceImpl extends ServiceImpl<WmUserMapper, WmUser> implements WmUserService {
    /**
     * 根据user对象查询自媒体数据
     * @param apiUserId 接收用户对象的id
     * @return 返回查询到的自媒体对象结果
     */
    @Override
    public WmUser findUserById(Long apiUserId) {
        return this.query().eq("ap_user_id",apiUserId).one();
    }

    @Override
    public ResultVo login(Map<String, Object> map) {
            //获取参数中的用户名和密码
            String name = (String) map.get("name");
            String password = (String) map.get("password");
            //判断账号密码是否为空，为空则返回用户名密码错误
            if (StringUtils.isEmpty(name)||StringUtils.isEmpty(password)){
                return ResultVo.bizError("用户名密码错误");
            }
            //账号密码不为空则根据用户名查询数据库
            //WmUserLogin wmUserLogin = query().eq("name", name).one();
        WmUser wmUser = query().eq("name", name).one();
        //判断根据用户名查找的对象是否为空，为空则表示，没有这个用户返回用户名密码错误
            if (wmUser==null){
                return ResultVo.bizError("用户名密码错误");
            }
            //不为空则生成token
            String token = AppJwtUtil.createToken(wmUser.getId());
            //创建map集合封装token和用户信息返回给前端页面
            Map<String,Object> tokenMap = new HashMap<>();
            tokenMap.put("token",token);
            //封装用户信息数据前将铭感信息清空
            wmUser.setPassword(null);
            wmUser.setSalt(null);
            //将用户进行封装到map集合中
            tokenMap.put("user",wmUser);
            return ResultVo.ok(tokenMap);
    }
}
